@L|}6CD l0C)HCC WhL/h `CmCDiD`  R@W1  Y0@R !L` D  C D     )16CS S)  C)D1 p p 0 C9DI pCDL~CiCDiD` D  C D     )16CS S)  C)D1 p p }0 C9DI pCDL~CiCDiD` DD˙` d J)L !}D L(( LL()  L| L( S LH 0p n  } CY?  q  L L  ` )} `A! d߰")-݆ "  $G@LLL&0") $G% }H0 3S8`G ȱG ȱG   Gȭ Gȭ GG}GHiH8(()) G$H% `(0 })8` d)L ݆ & LGȘ ݆LL d  ! LL d)N>Q  HH) }  hyhyB q L> Lm JJ  Ln*` dB%' }8  H H` 1 { LL   !L     Hh SY?  q  1L }  !? S   q 1 L   Ll  Lg E`L   !L)  q 1L}) `L0AM݊L݉ ML  N݆LLLNLMLHG!@}1F GȱGLLEEȩÑEȑEEȑE Ed E7EȩE  q} L !,0,0SGɛ L 1 !L EHEh W G gLLSROTCES EERF } G) *Gȩ GȽG GȌd q q G`  8   0G  `D}CEDC0X:Ȣ Y ȱC* ? 0.. , 0%n ?A[ 0 : L`L  `, 0`Y}`piH n0)բY? 08`0 }  0$L GGȽG L `8L`L}8`  05G)݁,G)ȱGȱGHh0})Hh` B! 8`8iiiLE`}E8FEh( l0`ɃLL L8^~jj8jHi hEEEiEȱEiE` dTE} H8EEȱEEȩEh J E8   . m  i`LI!)E1FR}1LJ舩9GIH`LJJ`HGHh l`} S gL   8 rii `дCDCG W  }C  Lq` X٨`DOS SYS IIIIIIIIIIIIIIIC`0 ߩ0}}} HE |||DDOS DOSDOS SYS }}}}CDOS SYS} 0`BDELV !B }`LVUQ   ]   TU J ]L!T  #      TU  } L ? .  t`GBJ V~DEHI B V0dV!}QDEHI VF9 ,0 ,0 s0hhL  L` H hDHEh"}DEL8HI   0 HI,0 0  9 .G VLO#},0 L4*IJ`llD1:AUTORUN.SYSNEED MEM.SAV TO LOAD THIS FILE.D1:MEM.SAV J y08 B|DEHI$} V0 0`B;DELV䌚 !B y`@ʆ v s? F0Ξ05: [ BDEHI%} VY8 B V  @  /DE `E:D1:DUP.SYSERROR-SAVING USER MEMORY ON DISKTYPE Y TO &}STILL RUN DOS B;DE J V (` 9 V⪍ ઍ  -'}LLu DEHILV 9 .l 9 .l  `` s$B VBH(}I|DE V BLV nB,DE J V* \*` B V BLVDEHI BLVL)}1u H232435; 1 ;  hh@2 e1i1LHҍ 00) 08 109hh@ Ҡ2e*}1i1232435ޥ<<8} 3E:}DISK OPERATING SYSTEM II VERSION 2.0SCOPYRIGHT 1980 ATARIA. DISK DIRECTORY I. FORMAT DISKB. RUN CARTRIDGE J. D,}UPLICATE DISKC. COPY FILE K. BINARY SAVED. DELETE FILE(S) L. BINARY LOADE. RENAME FILE M. RUN AT ADDRESSF. LOCK F-}ILE N. CREATE MEM.SAVG. UNLOCK FILE O. DUPLICATE FILEH. WRITE DOS FILES9!&x#!7&p))'&X*./)L''-؆莟.}R'S  vW DEHHI 1A#! @ ~0ɛ8A0.) ȅ 1 1i/}il ! 1L NO SUCH ITEMSELECT ITEM OR FOR MENU! 0 .{z:*{}.|~ 1 0 00}JB 18L^%|DLl%DIRECTORY--SEARCH SPEC,LIST FILE? # 0 0 n&|D! 1L NOT A DISK FILE1}N !B 1L " 1 !BDED:}:1BJ|DE 1DEBH2}I 1 h0ߢ 0.  0?詛 1 ~0YЛ 1 "L<" "L 3} BL1TYPE "Y" TO DELETE...DELETE FILE SPECCOPY--FROM, TO?OPTION NOT ALLOWED COPYING---DN:4}# 0|D .L$A#B#C#JB|DE 1BHIDD#E 1D#0: B5} 1L B#C#C#B# B 1N#$0SYS1}:e#D# d# D# .d#ȽD# d# 𩛙d#X# 1,A#6}PdD#ELO- A.BJdD#E 1 1HH 0hh|DL^%1}:e# Lt% e#dD#EL%7} 1 0 . .0% 1L WILD CARDS NOT ALLOWED IN DESTINATION 0 A.|K@C}//3Hu ξL/L DRIVE TO WRITE DOS FILES TO?WRITING NEW DOS FILESTYPE "Y" TO WRITE DOS TO DRIVE 1.?}D1:DOS.SYSERROR - NOT VERSION 2 FORMAT. , &* բ( 1L `[) 0NΞ 0 L1M) 1@} L BAD LOAD FILELOAD FROM WHAT FILE?) 0 0#B 1L WHAT FILE TO LOCK?) 0 0$B 1L WHAT FILE TO UNLOCK?DUA}P DISK-SOURCE,DEST DRIVES?TYPE "Y" IF OK TO USE PROGRAM AREACAUTION: A "Y" INVALIDATES MEM.SAV. h  ,B}  `)  <0 2 2 0  ,   ,,ޢ* 1L ,K* 1 ~0 0C}FINSERT BOTH DISKS, TYPE RETURNERROR - DRIVES INCOMPATIBLE., 1 ~038  , 1L D}, &*  Lz+, 0 , 1 ~0 + Y,0!,0 ,L+ ,mm  v,"ǭE}0Ξ, 05,Lt+L +,Hh` NOT ENOUGH ROOMINSERT SOURCE DISK,TYPE RETURNF}INSERT DESTINATION DISK,TYPE RETURN`    `L,8,0( rG}L1(`ߢ) 1* 1 ~0Y`hhL S SL1) 8`NAME OF FILE TO MOVE?- 0 0|DLtH}% A., 1 <0 0 .@L# .BJ 1  DEHIB V L1 ,5 1 <0,L. I} JB|,A#Pd#DE 1 HI BDEHHII 1 B 1 , 1 <0,0Lf- B VJ},A#P, 1 <0 0L#L ߢ) 1* 1 ~0Yj383}mm ݭK}}`8}``|* ? ɛ,`|:(|/ 1L `DESTINATION CANT L}BE DOS.SYS0 0H{ $22Δ $28/L /) $2 Π $2 0 ξM}hAΞB,0 J 1 BޝDEHI,HDE 1HIHIDELSAVE-N}GIVE FILE,START,END(,INIT,RUN)O X0 1`BDEPHI V` X0H 1 L O}0 0 1L0`PLEASE TYPE 1 LETTER,0`hhL <0 1L0LA1 ,;ɛ7,"ɛ:ݦ1ݥP}A"D|ݤD|ȩ:|ȩ|ɛ,,(/+.ީ1 1,ɛ`轤{Q}NAME TOO LONG B VL ` L1I H1EӝDL1|mDiE` V0`8d/8 i:"2!22 1R} L ERROR- 138ɛ+,' 20*.. өw2 1``2TOO MANY DIGITSINVALIDS} HEXADECIMAL PARAMETER800 0 8 00`,0'D800H,ɛh`2L1NEED D1 THRU D4uT} HEXADECIMAL PARAMETER800 0 8 00`,0'D800H,ɛh`2L1NEED D1 THRU D4u Printer Driver Construction Set by John Eric Hinckley PRINTER DRIVER CONSTRUCTION SET by JOHN HINKLEYThV}is PRINTER DRIVER CONSTRUCTION SET will allow you to build your own printer drivers for use with the ATARIWRITER cartridge. W}You will be able to use all of your printer's special features -- maybe even those that ATARIWRITER doesn't support. You wilX}l, of course, still be subject to your printers limitations.This kit is very flexible and should work with any printer. YoY}u will have to know the escape sequences that your printer expects to shift into its various modes. It may take some amount Z}of experimentation on your part to figure out exactly what to tell the printer to accomplish each function. Remember that no[}t all functions are available in every mode on some printers. You can send anywhere between 0 and 16 bytes (sometimes 32 byt\}es, as indicated) to perform each function.Before starting to build a printer driver, examine diagrams one and two. Diagra]}m one shows where each of the escape sequences will be sent on a typical document. Diagram two is an example of what your fi^}nal printer driver might produce with the same file.The printer driver on your original disk will not send any formatting d_}ata to the printer -- it will send only the text from your ATARIWRITER files to the printer. You must go through each of the`} steps in the construction set to get your printer to function correctly. HOW TO USE THE CONSTRUCTION SETBOOTINGTo ba}uild a new printer driver, or modify an old one, you need to run the BASIC program "EDIT" as follows:1) Turn off your compb}uter and disk drive #1.2) Turn on disk drive #1. When the motor stops put the original printer driver diskette in the drivc}e.3) Put your BASIC cartridge in the computer and turn it on. If you have an XL computer you should turn the computer on wd}ithout holding down the OPTION button.4) You should now see the MAIN MENU:------------------------------------| PRINTER e}DRIVER CONSTRUCTION SET || || ||1) LOAD AN EXISTING PRIf}NTER DRIVER|| ||2) EDIT INIT COMMAND || ||g}3) EDIT SET FONT COMMANDS || ||4) EDIT UNDERLINE COMMANDS || h} ||5) EDIT ELONGATED COMMANDS || ||6) EDIT SUPER/SUB SCRIPT COMi}MANDS || ||7) EDIT END OF PAGE COMMAND || ||8) SAj}VE DATA TO DISK || ||9) QUIT WITHOUT SAVING DATA || k} || || WHICH (1-9) ?_ || l} |------------------------------------MODIFYING A PRINTER DRIVERIf you want to modify a printer driver that you previousm}ly built with this kit select item #1 from the MAIN MENU. The computer will prompt you to place the disk containing your prin}nter driver in drive #1 and press :------------------------------------| || o} || || || p} || PUT DISK WITH PRINTER DRIVER || || IN DRIVE #1. q} || || || Press to continue || r} || |------------------------------------If there was no problem s}reading the data from your old driver then go on to the next step. If the disk drive encounters a disk error there is sometht}ing wrong with your old printer driver and you will have to build a new one. Start over again by booting the disk and skippiu}ng this step.CREATING A NEW PRINTER DRIVERThe printer driver on the original disk will send no special instructions to thv}e printer; it will only send normal text. To use all of the features of ATARIWRITER you should go through each of the steps w}that follows. If you are modifying an old printer driver you need only perform the steps involved in changing those items yox}u want to change.HOW TO INPUT OR CHANGE DATASelect an item from the MAIN MENU. You will then see a new screen with the cy}urrent data for that sequence. If there is currently no data then you will see only a cursor in the upper right corner of thz}e screen. Using the INIT sequence as an example:------------------------------------| |{}| CURRENT DATA FOR INIT SEQUENCE: || (UP TO 32 BYTES) || || _ |} || || WOULD YOU LIKE TO CHANGE IT || (Y/N)?_ }} || || |------------------------------------Noti~}ce that the title of the sequence you are changing and the maximum number of characters that you can specify for it are displ}ayed at the top of the screen.If you want to change the data then answer "Y" or "YES" to the prompt. The previous data wil}l remain at the top of the screen. At the bottom of the screen you will be prompted to input the new data (starting with the} first byte) in decimal:------------------------------------| || CURRENT DATA FOR INIT S}EQUENCE: || (UP TO 32 BYTES) || || _ || } || || || } ||ENTER DATA IN DECIMAL, ONE NUMBER ||AT A TIME, STARTING FROM BYTE #1 || } || BYTE #1 ?_ |------------------------------------Input each value, followed by . To} stop inputting data press without giving a value:------------------------------------| } || CURRENT DATA FOR INIT SEQUENCE: || (UP TO 32 BYTES) || || _} || || || BYTE #1 ?27 } || BYTE #2 ?82 || BYTE #3 ?_ |--------------------------------}----Your new data will be displayed at the top of the screen and you will be asked again if you want to change it:-------}-----------------------------| || CURRENT DATA FOR INIT SEQUENCE: || (UP TO 32 BYTES) } || || 27 82 || }|| || || WOULD YOU LIKE TO CHANGE IT || (Y/N) ?_ }THE INIT SEQUENCE(up to 32 bytes)The "INIT SEQUENCE" is sent to the printer once at the beginning of each document, i.e., }each time you start printing by selecting "P" from the ATARIWRITER main menu. You need not specify anything for this sequenc }e but you should send something that will initialize the printer. If your printer has an internal buffer you may want to tel }l it to empty the buffer before printing. This will assure that anything left over in the buffer doesn't get printed at the }top of your new document! You might send the commands that set/reset the margins or the print quality.FONT SELECTION SEQU }ENCES(up to 16 bytes for each font)You can program up to three different fonts on each printer driver you construct. You }must tell the construction set how many characters will fit on one 8 inch line so that it will know how to format each line. } The font command is sent at the beginning of every line. You cannot switch fonts in the middle of a line, only at the start } of a new line.FONT #1: This is usually a standard 10 CPI (Characters Per Inch) font but you can make it any of your print }ers possible fonts. Be sure to give the proper character width for the font you choose.FONT #2: Like FONT #1, this can be } any font you choose. It is usually a "compressed" or 17 CPI font. I often use this as 12 CPI since 17 CPI is a little too }small for most purposes.FONT #3: This is intended to be the "proportional font". In a proportional font each character ha }s its own width. If you use it as a proportional font you will have to specify how many of each of the characters will fit o }n one 8 inch line. If you choose not to make this a proportional font, you will have to supply only one width -- ATARIWRITER } will use that width for every character.CHARACTER WIDTHS: In order for ATARIWRITER to know how many characters will fit b }etween the margins, it must know the width of each character. I have written the Printer Driver Editor to accept character w }idths as the number of characters that will fit on one 8 inch line. For regular character sets this can be easily calculated } by multiplying the CPI (characters per inch) by 8 inches.E.g.: (10 CPI) X (8 inches) = 80 characters per line.For the w }idth of proportional characters, the files "CHAR1.AW" and "CHAR2.AW" can be loaded by ATARIWRITER and printed once you have a } printer driver partially completed. The decimal value and 200 of each of the printable characters will be printed. You wil }l then have to count (yuk!) how many characters are on each line. You can then run the construction set again to fill in the } character widths for the proportional character set:------------------------------------| } || || || || } || SINCE FONT #3 IS A PROPORTIONAL || FONT YOU WILL HAVE TO PROVIDE || THE WIDTH OF EACH CHAR }ACTER SO || THAT ATARIWRITER WILL KNOW HOW || MANY CHARACTERS TO PUT ON EACH || LINE. || } || PRESSING RETURN ALONE WILL || SKIP TO THE NEXT CHARACTER || } || ESCAPE WILL ABORT, LEAVING THE || REMAINING DATA UNCHANGED || } || #32 ( ) DEFAULT < 183 ?_ || || |------ }------------------------------The data on the input line is: the decimal value of the current character "#32", the ASCII re }presentation of the character in parenthesis "( )", the current value for the width (the number of characters per line) "DEFA }ULT = 183," and then the prompt "? ". If the current value is correct, simply press to proceed to the next characte }r. If you want to quit inputting values before the end, press before pressing any other key at the prompt.The printe }r driver comes with a set of defaults for each of the proportional characters. These values are based on the proportional ch }aracter set of the PROWRITER from C-ITOH. They will probably not be correct for your printer but may be close enough. Of co }urse, if you don't use the proportional font at all you won't have to worry about the character widths.ELONGATED CHARACTERS }(up to 16 bytes)Elongated characters are printed twice the width of normal characters. Some printers will print each of t }heir fonts in elongated mode: 10 CPI becomes 5 CPI, 17 CPI becomes 8.5 CPI, etc. Other printers may not print all fonts in d }ouble width. Letter quality printers can't print double width characters at all -- you can't elongate the characters on a da }isy wheel! Because of this I have allowed you to specify whether or not the elongated characters are really double width. I }f your printer doesn't print double width you can use the elongated command to perform something else like double strike, sha }dowing, or italics. The stop elongated command is sent at the beginning of every printed line. You can switch in and out of } elongated mode at any time.UNDERLINED CHARACTERS(up to 16 bytes)These two commands allow you to tell your printer to s }tart or stop underlining characters. You can switch in and out of underline mode at any time. Some printers have to be told } to underline each and every character. Other printers continue to underline until told to stop underlining. Yet other prin }ters don't underline automatically -- you have to print an underline character and then print the regular character in the sa }me place. The printer driver allows you to specify whether or not to send the underline command before every character to be } underlined or only at the beginning of a string of underlined characters.If your printer has to print an underline and the }n print a character, remember that the underline command comes before the character is printed. You will have to print and u }nderline character, then a back-space, and then the character, i.e., the data in the driver should be the codes for the under }line character and the back-space character. ATARIWRITER will then print the regular character.SUPERSCRIPTS AND SUBSCRIPTS }(up to 32 bytes)There are basically two types of superscripts and subscripts. Some printers print small characters on the } top or bottom half of the line. Others feed the paper forward or backward some fraction of a line. ATARIWRITER counts the }verticle position on the paper in 1/2 line increments. It thinks that a superscript is the same as half of a reverse linefee }d, and that a subscript is half of a forward line feed. This means that normally a subscript command will be sent to termina }te superscripts and a superscript command will be sent to terminate subscripts. The printer driver can convince ATARIWRITER }that super/sub scripts don't feed paper backwards or forwards in half line increments. If your printer can't feed paper back }wards, or if the superscripts and subscripts are not exactly 1/2 linefeeds, then answer no when the construction set asks abo }ut this. You will then be given a chance to input the stop-superscript and stop subscript commands.struction set asks abo gThe editor will then ask if your printer can perform 1/2 forward line feeds (regardless of what super/sub scripts do). If yo}u answer yes, you will be asked to supply the data to perform this.Double column printing is performed by printing all of t}he left column, feeding the page back to the top with superscripts, and then printing the right column. If your superscript }command is not exactly a -1/2 line feed you will not be able to print with double columns. If your printer does not have a 1}/2 forward line feed ability you will not be able to print in one-and-a-half (or two-and-a-half, or three-and-a-half etc.) li}ne spacing.END OF PAGE SEQUENCE(up to 16 bytes)This sequence is sent at the end of each page. You probably don't need }to put anything here but I included it just in case. You might put things like stop underline or stop elongated. There is n}o need to put any form feed here because ATARIWRITER will feed to the end of the page using carriage returns.NOTESThe pr}inter driver uses the decimal value 255 to mark the end of the sequence to be sent for each function. This means that you wi}ll not be able to send the value 255 to the printer. This will probably not be a problem -- I don't know of any printer whic}h requires 255 for any function. If you input the number 255 at any time while editing a printer driver, the 255 and any sub}sequent data will not be seen on the screen or sent to the printer. Some printers have two modes of printing. In one mod}e they print every character as it is received. In the other mode they wait until several characters are received and then d}ecide what the fastest way to print those characters is. The first mode is called "incremental," the second is called "logic} seek" or "buffered" printing. Logic seeking usually results in faster printing, but, some functions are not performed corre}ctly in logic seek mode by some printers. For example, the PROWRITER from C-ITOH doesn't perform line feeds correctly when i}n logic seek. To make it print a subscript, the printer has to be told to do a partial line feed (1/2 the height of a normal} line). But in order for it to do this correctly, it first has to be switched to incremental mode. It also doesn't know any}thing about superscripts and subscripts so you have to tell it to feed paper backwards or forwards and by how much. The enti}re subscript sequence looks something like this:- set incremental mode- set line feed pitch to 12/144 inch- do a line fee}d at current pitch- set line feed pitch back to 24/144 inch- set logic seek mode.That takes a total of 11 bytes! The sup}erscript command is even worse:- set incremental mode- set line feed pitch to 12/144 inch- set line feed to reverse- do }a line feed at the current pitch- set line feed to forward- set line feed to 24/144 inch- set logic seek modeThat takes }a whopping total of 15 bytes! That's why I reserved up to 32 bytes for superscripts and subscripts.On many printers the me}chanical linkage of the platen has a small amount of play in it. After printing a subscript they don't return all the way to} "normal" line level. If your printer can, I recommend that the superscript command feed the paper backward one full line an}d then forward one half line. This will result in the line level returning back to normal after a subscript/superscript sequ}ence.Another thing to watch out for is a small "bug" in the O/S. When ATARIWRITER is finished printing a file it "closes" }the printer channel. If there are less than 40 characters left in the printer buffer the O/S pads out the buffer with blank }spaces. It then sends the buffer out to the printer. The last thing that ATARIWRITER printed was probably a carriage return} but now there are some spaces printed out that ATARIWRITER doesn't know about. If your top margin is set to 0 there will be} a problem on the next document printed: it will have those extra spaces at the beginning. That means that the first line wi}ll be printed farther to the right than it was supposed to be. If the top margin is any number greater than 0 then there wil}l be no problem -- the printer will print the spaces and then print a carriage return -- you will never see the extra spaces.} This caused me a lot of trouble when I was writing the printer driver. I was using a short test file which had a top margi}n of 0, a bottom margin of 0 and a page lenth of 20. This file allowed me to print a document without having to use a full s}heet of paper each time. Well, I kept getting those extra spaces at the start of each printing. It took me hours to figure }out that the problem wasn't a bug in the printer driver!spaces at the start of each printing. It took me hours to figure ;@@L E }Press to list document to screen, to print document. }Š嬠Ѡ}End of listing, press RETURN.D1:DOC.000 pppG@pppppp0BA@documentationoutput}program@A0rovidedby*im4hompsonof"lue#ollar3oftw}arefrom!ntic-agazine 4he!tari2esourcepressstart$ocumentationforA0}AAAA1ABA2A8AA)A8d0A8didAA8 A0ALBAi AAmAA8:0 8A AAA8:0 A A}A`00gBhBiBjBkBLB3gB2hB7iB6jB8kB)ϥ8dΥ0.iB8iB:08iB iBhB8hB:08hB hBgBL}BidΥi8 BC0jBLBi mkBkBkB8:0 8kB kBjBjB8:0 8jB jBiBiB8:0 8iB iBhBhB8:0 8hB h}BgB`bCaCɛ LmC8`Cȱ80maCaCbCibC`C3 aC^CbC_C^CmaC^C_CmbC_C^CaC_CbCLC`S:}K:E:P:C:R1:R2:R3:R4CD:ERROR!!!!!D1:MACROS EF B V B V0 B VP B V0@B JKٝD}CE V BJKD@E V0iέ1iϠ΍@ȱ΍@0@1 BDJEHI V BD}JEHI V BDJEHI V BDJFGEHI VЭ@@0@ B VB }JKٝDCE VPBJK֝DCE V BD@EHI VPBHIDJE VJS?s;P}pLtFF@@8@0BJKܝDCE VLG%@@GG@ B V BJKD@E V B}DJEHI V BDJEHI V܅ΩJϩ@ BHID@E VLI@ɛ= @΅Х}iΥi@@8@Ч@ @LGЩ@@?0 BHIGHםDJE V0 BܝDJEHI VLIH} BܝDJEHI V@@͚@L:I@LH0 BHID@E V0 B V0BJKܝDCE V }BTD@EHI V0 BHID@E VLI BUD@EHHII VPBHIDJE VJ} QqLILI@@@ ɛLiG88@܅ΩJiХiѠБiΥiiХiLvG B V}@ BJKD@E V0LvG B V BzD@EHI VBIJDJEHI VL EJJ }@L E }Press to list document to screen, to print document. }Š嬠Ѡ || |------------------------------------If you made a mistake cha }nge the data again using the same procedure. If the data is correct type "N" or "NO" followed by and you will retur }n to the MAIN MENU. Some of the other sequences will ask other questions; see the appropriate section for instructions on wh }at to answer.SAVING DATA TO DISKUse this option (#8) to save the current printer driver and data to disk. You should use } a formatted disk with ATARI's DOS II file, DOS.SYS, on it. Saving the data to disk will create a file called AUTORUN.SYS. }When the "save" is done your new disk will be ready to boot with ATARIWRITER. The file DEMO.AW is provided on the original d }isk so that you may test your newly created printer drivers. This file is the one that was used to create diagrams one and t }wo. Note that the page length is shorter than normal. This was done so that the end of page sequence would be seen on } the same page as the rest of the document. If the page length was set to the normal value of 132 the would have appea }red at the top of the second page. That is, ATARIWRITER would have printed the entire page and then sent the command, }but by this time the printer would be at the top of the second page.nted the entire page and then sent the command, GB'DOS SYSB*+DUP SYSBDUDOC 000B:DOC 001B&DOC 002BAUTORUN SYS